home *** CD-ROM | disk | FTP | other *** search
/ Game.EXE 2001 January / execd1200.iso / Shareware / Blocks 3 / setup.exe / Source / BOX.C < prev    next >
Encoding:
C/C++ Source or Header  |  2000-10-07  |  1.7 KB  |  79 lines

  1. #include <allegro.h>
  2. #include <jgmod.h>
  3. #include <blocks3.h>
  4.  
  5. void Box_Push(int x, int y, int z, int dx, int dy)
  6. {
  7.  int i;
  8.  
  9.  i = 0;
  10.  
  11.  while ((i < box_count) &&
  12.    ((box[i].x/32 != x) || (box[i].y/32 != y) || (box[i].z != z)))
  13.  i++;
  14.  
  15.  if (i == box_count) exit(7);
  16.  
  17.  if ((!box[i].dx) && (!box[i].dy) && (!box[i].dz))
  18.  {
  19.   box[i].dx = dx;
  20.   box[i].dy = dy;
  21.  }
  22.  map[box[i].x/32 + box[i].dx][box[i].y/32 + box[i].dy][box[i].z/8] = (RESERVE | box[i].type);
  23. }
  24.  
  25. void Box_Move(void)
  26. {
  27.  int i;
  28.  
  29.  for (i = 0; i < box_count; i++)
  30.  {
  31.   if ((box[i].dx) || (box[i].dy) || (box[i].dz))
  32.   {
  33.    box[i].x +=box[i].dx;
  34.    box[i].y +=box[i].dy;
  35.  
  36.    if ((box[i].x%32 == 0) && (box[i].y%32 == 0) && (!box[i].dz))
  37.    {
  38.     box[i].dx = 0;
  39.     box[i].dy = 0;
  40.     map[box[i].x/32][box[i].y/32][box[i].z/8] = box[i].type;
  41.    }
  42.  
  43.    if (box[i].dz)
  44.    {
  45.     box[i].z +=box[i].dz;
  46.  
  47.     if (!box[i].z)
  48.     {
  49.      box[i].dz = 0;
  50.      map[box[i].x/32][box[i].y/32][0] = box[i].type;
  51.      map[box[i].x/32][box[i].y/32][1] = 0;
  52.     }
  53.    }
  54.  
  55.    DirtyList(box[i].x, box[i].y, box[i].z, 32, 40, box[i].pic);
  56.   }
  57.  }
  58. }
  59.  
  60. void Box_Fall(void)
  61. {
  62.  int i;
  63.  
  64.  for (i = 0; i < box_count; i++)
  65.  {
  66.   if ((Check_Can_Fall(box[i].x, box[i].y, box[i].z)) &&
  67.      ((ply[0].x/32 != box[i].x/32) || (ply[0].y/32 != box[i].y/32)) &&
  68.      (((ply[0].x + 31)/32 != box[i].x/32) || (ply[0].y/32 != box[i].y/32)) &&
  69.      ((ply[0].x/32 != box[i].x/32) || ((ply[0].y + 31)/32 != box[i].y/32)) &&
  70.      (((ply[0].x + 31)/32 != box[i].x/32) || ((ply[0].y + 31)/32 != box[i].y/32)))
  71.   {
  72.    box[i].dz = -1;
  73.  
  74.    map[box[i].x/32][box[i].y/32][1] = RESERVE;
  75.    map[box[i].x/32][box[i].y/32][0] = RESERVE;
  76.   }
  77.  }
  78. }
  79.